import { formatTime } from '../../utils/util';
import Phone from './Phone'
class PCModel{
// 模拟一个简单的阻塞队列
 queue : Phone[]=[];

 phoneNum=0
 //消费生产时间
produceTime=2000
consumeTime=1000
// 生产者函数
async  producer() {
  while (true) {
    const item = await this.produceItem() as Phone; // 生产一个项目
    this.queue.push(item); // 将项目添加到队列
  }
}

// 消费者函数
async  consumer() {
  while (true) {
    const item = this.queue.shift()!!; // 从队列中取出项目
    // if(item!=null){
      await this.consumeItem(item); // 消费项目
    // }
  }
}

// 异步生产项目 
produceItem() {
  return new Promise((resolve) => {
    // 模拟异步操作
    setTimeout(() => {
    //   const newItem = Math.random();
    var currentTime=formatTime(new Date())
    this.phoneNum++;
    var phone=new Phone(this.phoneNum)
    console.log(`生产了项目`+currentTime,phone);
  
      resolve(phone);
    }, this.produceTime);
  });
}

// 异步消费项目
 consumeItem(item:Phone) {
  return new Promise((resolve) => {
    // 模拟异步操作
    setTimeout(() => {
      var currentTime=formatTime(new Date())
     
      console.log(`消费了项目：`+currentTime,item);
      resolve(item);
    }, this.consumeTime);
  });
}


 /**
     * 把Date 转换为yyyy-mm-dd HH:mm格式显示
     * @param date 
     */
     formatDateTime(date: Date): string {
      const year = date.getFullYear();
      const month = String(date.getMonth() + 1).padStart(2, '0');
      const day = String(date.getDate()).padStart(2, '0');
      const hours = String(date.getHours()).padStart(2, '0');
      const minutes = String(date.getMinutes()).padStart(2, '0');
      const seconds = String(date.getSeconds()).padStart(2, '0');
      const mill = String(date.getMilliseconds()).padStart(4, '0');
      return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}:${mill}`;
  }


}

export default PCModel